/** 返回的分页信息 */
type PageResponseI = {
  /** 页码, 默认: 1 */
  page?: number;
  /** 每一页数量, 默认: 15 */
  pageSize?: number;
  /** 数据总量 */
  total: number;
};

const CODE_MESSAGE = {
  0: "SUCCESS",
  40001: "接口签名错误",
  10001: "验证码错误",
};

/**
 * 标准的响应形式，所有的响应都调用该函数
 * @param data 响应数据
 * @param code 响应代码, 默认: 0
 * @param message 响应信息
 * @param pageInfo 分页信息
 */
export function body(
  data?: any,
  code = 0,
  message?: string,
  pageInfo?: PageResponseI
) {
  return {
    code, // 响应代码
    message: message || CODE_MESSAGE[code as 0], // 响应信息
    data:
      pageInfo == null
        ? data
        : {
            data,
            pageInfo: pageInfoBody(
              pageInfo.total,
              pageInfo.page,
              pageInfo.pageSize
            ),
          },
  };
}

function pageInfoBody(total: number, page = 1, pageSize = 15) {
  const totalPage = Math.ceil(total / pageSize);
  return {
    page,
    pageSize,
    total,
    totalPage,
    isEnd: page >= totalPage,
  };
}
